package org.schedule.service.serviceImp;

import lombok.extern.slf4j.Slf4j;
import org.schedule.entity.Schedule;
import org.schedule.mapper.ScheduleMapper;
import org.schedule.service.ScheduleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.List;

@Service
@Slf4j
public class ScheduleServiceImp implements ScheduleService {

    private final ScheduleMapper scheduleMapper;

    // 构造函数注入 ScheduleMapper
    @Autowired
    public ScheduleServiceImp(ScheduleMapper scheduleMapper) {
        this.scheduleMapper = scheduleMapper;
    }

    // 添加新的日程
    @Override
    public boolean addSchedule(Schedule schedule) {
        try {
            // 调用 mapper 插入日程
            int rowsAffected = scheduleMapper.insertSchedule(schedule);
            return rowsAffected > 0;
        } catch (Exception e) {
            // 发生异常时打印错误信息
            e.printStackTrace();
            return false;  // 发生异常时返回 false
        }
    }

    // 更新已有的日程
    @Override
    public boolean updateSchedule(Schedule schedule) {
        try {
            // 调用 mapper 更新日程
            int rowsAffected = scheduleMapper.updateSchedule(schedule);
            return rowsAffected > 0;
        } catch (Exception e) {
            // 发生异常时打印错误信息
            e.printStackTrace();
            return false;  // 发生异常时返回 false
        }
    }

    // 根据 ID 删除日程
    @Override
    public boolean deleteSchedule(Integer id) {
        try {
            // 调用 mapper 根据 ID 删除日程
            int rowsAffected = scheduleMapper.deleteSchedule(id);
            return rowsAffected > 0;  // 如果至少删除了一行，返回 true
        } catch (Exception e) {
            // 发生异常时打印错误信息
            log.error(e.getMessage());
            return false;  // 发生异常时返回 false
        }
    }

    // 获取所有日程（包含关联的用户数据）
    @Override
    public List<Schedule> getAllSchedules() {
        return scheduleMapper.getAllSchedules();

    }

    //查询用户所有日程
    @Override
    public List<Schedule> getSchedulesByUserId(Integer userId) {
        return scheduleMapper.getSchedulesByUserId(userId);
    }

    // 根据 ID 获取日程（包含关联的用户数据）
    @Override
    public Schedule getScheduleById(Integer id) {
        return scheduleMapper.getScheduleById(id);

    }

    @Override
    public List<Schedule> searchSchedulesByContent(Integer userId, String content) {
        return scheduleMapper.searchSchedulesByContent(userId, content);
    }
}
